Quiero reemplazar HTML en el documento con .innerHTML pero por alguna razón no funciona:
<div class="specs"> <div class="wrapp"> <p class="line">Content</p> </div> </div> document.getElementsByClassName("specs").innerHTML = "<p>Lorem ipsum</p>";getElementsByClassName devuelve una colección. Ni un solo artículo.
Hay varias formas de hacer esto: puede ejecutar un bucle for sobre los elementos devueltos.
let specs = document.getElementsByClassName("specs"); for(let i = 0 ; i < specs.length;i++){ specs[i].innerHTML = "<p>Lorem ipsum</p>"; } Si solo tiene un elemento, puede usar querySelector que devuelve el primer elemento coincidente.
document.querySelector(".specs").innerHTML = "<p>Lorem ipsum</p>";De una manera concisa así es como lo harías
const targets = document.getElementsByClassName("specs") if (targets.length) for (spec in targets) targets[spec].innerHTML = "<p>Lorem ipsum</p>"; <div class="specs"> <div class="wrapp"> <p class="line">Content</p> </div> </div>Encontré tu error.
document.getElementsByClassName devuelve una matriz de elementos con el nombre de clase dado. así que prueba esto.
document.getElementsByClassName("specs")[0].innerHTML = "<p>Lorem ipsum</p>";Por ejemplo, si tiene dos elementos con el mismo nombre de clase, devuelve una matriz que contiene ambos elementos, por lo que debe obtener el elemento utilizando el índice especificado de la matriz. 👍